####################################
### This code was automatically  ###
###        generated             ###
###    on 16.02.2021 at 09:24    ###
####################################

#################################
###########  Import   ###########
#################################
import numpy as np

import synumses.one_dimension.parameters as parameters
from   synumses.one_dimension.functions import ohm_potential


#################################
########### Bernoulli ###########
#################################
def bernoulli(x):
	if (( x < -parameters.bernoulli_limit )):
		x = x/(np.exp(x) - 1)

	elif (( x < parameters.bernoulli_limit )):
		x = 1.0 - 0.5*x

	else:
		x = x/(np.exp(x) - 1)

	return(x)
############################################
########### hole_current_density ###########
############################################
def hole_current_density():

	j_p = np.zeros(parameters.n)

	for i in range(0,parameters.n-1):
		if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
			j_p[i] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

		elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
			j_p[i] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

		elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
			j_p[i] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

		elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
			j_p[i] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

		elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
			j_p[i] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

		elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
			j_p[i] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

		elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
			j_p[i] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

		elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
			j_p[i] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

		else:
			j_p[i] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx


	i = parameters.n-1
	j_p[i] =  j_p[i-1]

	return j_p


################################################
########### electron_current_density ###########
################################################
def electron_current_density():

	j_n = np.zeros(parameters.n)

	for i in range(0,parameters.n-1):
		if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
			j_n[i] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

		elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
			j_n[i] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

		elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
			j_n[i] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

		elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
			j_n[i] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

		elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
			j_n[i] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

		elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
			j_n[i] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

		elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
			j_n[i] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

		elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
			j_n[i] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

		else:
			j_n[i] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx


	i = parameters.n-1
	j_n[i] =  j_n[i-1]

	return j_n


################################
########### update_b ###########
################################
def update_b(Ua, Ub):

	for i in range(0, parameters.n):
		if (i==0) :
			#################
			###  left ###
			#################
			parameters.b[3*i+0] = (ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - 2.0*parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0] + parameters.dx**2*parameters.q*(parameters.C[i] - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.Epsilon[i]
			if (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			else:
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			if (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			else:
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

		elif(i==parameters.n-1):
			#################
			###  right ###
			#################
			parameters.b[3*i+0] = (ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - 2.0*parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0] + parameters.dx**2*parameters.q*(parameters.C[i] - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.Epsilon[i]
			if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			else:
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			else:
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

		else:
			#################
			###  center ###
			#################
			parameters.b[3*i+0] = -2.0*parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0] + parameters.u[3*(i-1)+0] + parameters.dx**2*parameters.q*(parameters.C[i] - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.Epsilon[i]
			if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			else:
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])

			else:
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i])


	return None



######################################
###########  jacobian ##################
######################################
def jacobian(Ua, Ub):

	for i in range(0, parameters.n):
		if (i==0) :

			#################
			###  left ###
			#################
			#######################
			###  poisson  ###
			#######################
			###parameters.A[3*i+0,3*(i-1)+0]  = ...
				parameters.A[3*i+0,3*(i+0)+0] = 2.0 - parameters.dx**2*parameters.q*(-parameters.Nc[i+0]*parameters.q*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.q*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))/parameters.Epsilon[i]
				parameters.A[3*i+0,3*(i+1)+0] = -1
			###parameters.A[3*i+0,3*(i-1)+1]  = ...
				parameters.A[3*i+0,3*(i+0)+1] = -parameters.Nv[i+0]*parameters.dx**2*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.Epsilon[i]*parameters.T*parameters.kB)
				parameters.A[3*i+0,3*(i+1)+1] = 0
			###parameters.A[3*i+0,3*(i-1)+2]  = ...
				parameters.A[3*i+0,3*(i+0)+2] = -parameters.Nc[i+0]*parameters.dx**2*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.Epsilon[i]*parameters.T*parameters.kB)
				parameters.A[3*i+0,3*(i+1)+2] = 0
			#######################
			###  div_j_p  ###
			#######################
			###parameters.A[3*i+1,3*(i-1)+0]  = ...
				if (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				if (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

			###parameters.A[3*i+1,3*(i-1)+1]  = ...
				if (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				if (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				else:
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

			###parameters.A[3*i+1,3*(i-1)+2]  = ...
				if (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				else:
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				if (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				else:
					parameters.A[3*i+1,3*(i+1)+2] = 0

			#######################
			###  div_j_n  ###
			#######################
			###parameters.A[3*i+2,3*(i-1)+0]  = ...
				if (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				if (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

			###parameters.A[3*i+2,3*(i-1)+1]  = ...
				if (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				else:
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				if (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				else:
					parameters.A[3*i+2,3*(i+1)+1] = 0

			###parameters.A[3*i+2,3*(i-1)+2]  = ...
				if (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				else:
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				if (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				else:
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

		elif(i==parameters.n-1):

			#################
			###  right ###
			#################
			#######################
			###  poisson  ###
			#######################
				parameters.A[3*i+0,3*(i-1)+0] = -1
				parameters.A[3*i+0,3*(i+0)+0] = 2.0 - parameters.dx**2*parameters.q*(-parameters.Nc[i+0]*parameters.q*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.q*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))/parameters.Epsilon[i]
			###parameters.A[3*i+0,3*(i+1)+0]  = ...
				parameters.A[3*i+0,3*(i-1)+1] = 0
				parameters.A[3*i+0,3*(i+0)+1] = -parameters.Nv[i+0]*parameters.dx**2*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.Epsilon[i]*parameters.T*parameters.kB)
			###parameters.A[3*i+0,3*(i+1)+1]  = ...
				parameters.A[3*i+0,3*(i-1)+2] = 0
				parameters.A[3*i+0,3*(i+0)+2] = -parameters.Nc[i+0]*parameters.dx**2*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.Epsilon[i]*parameters.T*parameters.kB)
			###parameters.A[3*i+0,3*(i+1)+2]  = ...
			#######################
			###  div_j_p  ###
			#######################
				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

			###parameters.A[3*i+1,3*(i+1)+0]  = ...
				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				else:
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				else:
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

			###parameters.A[3*i+1,3*(i+1)+1]  = ...
				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				else:
					parameters.A[3*i+1,3*(i-1)+2] = 0

				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				else:
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

			###parameters.A[3*i+1,3*(i+1)+2]  = ...
			#######################
			###  div_j_n  ###
			#######################
				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

			###parameters.A[3*i+2,3*(i+1)+0]  = ...
				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				else:
					parameters.A[3*i+2,3*(i-1)+1] = 0

				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				else:
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

			###parameters.A[3*i+2,3*(i+1)+1]  = ...
				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				else:
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

			###parameters.A[3*i+2,3*(i+1)+2]  = ...
		else:

			#################
			###  center ###
			#################
			#######################
			###  poisson  ###
			#######################
				parameters.A[3*i+0,3*(i-1)+0] = -1
				parameters.A[3*i+0,3*(i+0)+0] = 2.0 - parameters.dx**2*parameters.q*(-parameters.Nc[i+0]*parameters.q*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.q*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))/parameters.Epsilon[i]
				parameters.A[3*i+0,3*(i+1)+0] = -1
				parameters.A[3*i+0,3*(i-1)+1] = 0
				parameters.A[3*i+0,3*(i+0)+1] = -parameters.Nv[i+0]*parameters.dx**2*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.Epsilon[i]*parameters.T*parameters.kB)
				parameters.A[3*i+0,3*(i+1)+1] = 0
				parameters.A[3*i+0,3*(i-1)+2] = 0
				parameters.A[3*i+0,3*(i+0)+2] = -parameters.Nc[i+0]*parameters.dx**2*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.Epsilon[i]*parameters.T*parameters.kB)
				parameters.A[3*i+0,3*(i+1)+2] = 0
			#######################
			###  div_j_p  ###
			#######################
				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+1,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				else:
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				else:
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				else:
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				else:
					parameters.A[3*i+1,3*(i-1)+2] = 0

				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				else:
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				else:
					parameters.A[3*i+1,3*(i+1)+2] = 0

			#######################
			###  div_j_n  ###
			#######################
				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+2,3*(i+0)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				else:
					parameters.A[3*i+2,3*(i-1)+1] = 0

				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				else:
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				else:
					parameters.A[3*i+2,3*(i+1)+1] = 0

				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				else:
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				else:
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))


	return 


################################
########### first_update_b ###########
################################
def first_update_b(Ua, Ub):

	for i in range(0, parameters.n):
		if (i==0) :
			#################
			###  left ###
			#################
			parameters.b[3*i+0] = (ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - 2.0*parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0] + parameters.dx**2*parameters.q*(parameters.C[i] - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.Epsilon[i]
			parameters.b[3*i+1] = -Ua + parameters.u[(3*i+0)+1]
			parameters.b[3*i+2] = -Ua + parameters.u[(3*i+0)+2]
		elif(i==parameters.n-1):
			#################
			###  right ###
			#################
			parameters.b[3*i+0] = (ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - 2.0*parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0] + parameters.dx**2*parameters.q*(parameters.C[i] - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.Epsilon[i]
			parameters.b[3*i+1] = parameters.u[(3*i+0)+1] - parameters.u[3*(i-1)+1]
			parameters.b[3*i+2] = parameters.u[(3*i+0)+2] - parameters.u[3*(i-1)+2]
		else:
			#################
			###  center ###
			#################
			parameters.b[3*i+0] = -2.0*parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0] + parameters.u[3*(i-1)+0] + parameters.dx**2*parameters.q*(parameters.C[i] - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.Epsilon[i]
			parameters.b[3*i+1] = parameters.u[(3*i+0)+1] - parameters.u[3*(i-1)+1]
			parameters.b[3*i+2] = parameters.u[(3*i+0)+2] - parameters.u[3*(i-1)+2]

	return None



######################################
###########  first_jacobian ##################
######################################
def first_jacobian(Ua, Ub):

	for i in range(0, parameters.n):
		if (i==0) :

			#################
			###  left ###
			#################
			#######################
			###  poisson  ###
			#######################
			###parameters.A[3*i+0,3*(i-1)+0]  = ...
				parameters.A[3*i+0,3*(i+0)+0] = 2.0 - parameters.dx**2*parameters.q*(-parameters.Nc[i+0]*parameters.q*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.q*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))/parameters.Epsilon[i]
				parameters.A[3*i+0,3*(i+1)+0] = -1
			###parameters.A[3*i+0,3*(i-1)+1]  = ...
				parameters.A[3*i+0,3*(i+0)+1] = -parameters.Nv[i+0]*parameters.dx**2*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.Epsilon[i]*parameters.T*parameters.kB)
				parameters.A[3*i+0,3*(i+1)+1] = 0
			###parameters.A[3*i+0,3*(i-1)+2]  = ...
				parameters.A[3*i+0,3*(i+0)+2] = -parameters.Nc[i+0]*parameters.dx**2*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.Epsilon[i]*parameters.T*parameters.kB)
				parameters.A[3*i+0,3*(i+1)+2] = 0
			#######################
			###  div_j_p  ###
			#######################
			###parameters.A[3*i+1,3*(i-1)+0]  = ...
				parameters.A[3*i+1,3*(i+0)+0] = 0
				parameters.A[3*i+1,3*(i+1)+0] = 0
			###parameters.A[3*i+1,3*(i-1)+1]  = ...
				parameters.A[3*i+1,3*(i+0)+1] = -1
				parameters.A[3*i+1,3*(i+1)+1] = 0
			###parameters.A[3*i+1,3*(i-1)+2]  = ...
				parameters.A[3*i+1,3*(i+0)+2] = 0
				parameters.A[3*i+1,3*(i+1)+2] = 0
			#######################
			###  div_j_n  ###
			#######################
			###parameters.A[3*i+2,3*(i-1)+0]  = ...
				parameters.A[3*i+2,3*(i+0)+0] = 0
				parameters.A[3*i+2,3*(i+1)+0] = 0
			###parameters.A[3*i+2,3*(i-1)+1]  = ...
				parameters.A[3*i+2,3*(i+0)+1] = 0
				parameters.A[3*i+2,3*(i+1)+1] = 0
			###parameters.A[3*i+2,3*(i-1)+2]  = ...
				parameters.A[3*i+2,3*(i+0)+2] = -1
				parameters.A[3*i+2,3*(i+1)+2] = 0
		elif(i==parameters.n-1):

			#################
			###  right ###
			#################
			#######################
			###  poisson  ###
			#######################
				parameters.A[3*i+0,3*(i-1)+0] = -1
				parameters.A[3*i+0,3*(i+0)+0] = 2.0 - parameters.dx**2*parameters.q*(-parameters.Nc[i+0]*parameters.q*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.q*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))/parameters.Epsilon[i]
			###parameters.A[3*i+0,3*(i+1)+0]  = ...
				parameters.A[3*i+0,3*(i-1)+1] = 0
				parameters.A[3*i+0,3*(i+0)+1] = -parameters.Nv[i+0]*parameters.dx**2*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.Epsilon[i]*parameters.T*parameters.kB)
			###parameters.A[3*i+0,3*(i+1)+1]  = ...
				parameters.A[3*i+0,3*(i-1)+2] = 0
				parameters.A[3*i+0,3*(i+0)+2] = -parameters.Nc[i+0]*parameters.dx**2*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.Epsilon[i]*parameters.T*parameters.kB)
			###parameters.A[3*i+0,3*(i+1)+2]  = ...
			#######################
			###  div_j_p  ###
			#######################
				parameters.A[3*i+1,3*(i-1)+0] = 0
				parameters.A[3*i+1,3*(i+0)+0] = 0
			###parameters.A[3*i+1,3*(i+1)+0]  = ...
				parameters.A[3*i+1,3*(i-1)+1] = 1
				parameters.A[3*i+1,3*(i+0)+1] = -1
			###parameters.A[3*i+1,3*(i+1)+1]  = ...
				parameters.A[3*i+1,3*(i-1)+2] = 0
				parameters.A[3*i+1,3*(i+0)+2] = 0
			###parameters.A[3*i+1,3*(i+1)+2]  = ...
			#######################
			###  div_j_n  ###
			#######################
				parameters.A[3*i+2,3*(i-1)+0] = 0
				parameters.A[3*i+2,3*(i+0)+0] = 0
			###parameters.A[3*i+2,3*(i+1)+0]  = ...
				parameters.A[3*i+2,3*(i-1)+1] = 0
				parameters.A[3*i+2,3*(i+0)+1] = 0
			###parameters.A[3*i+2,3*(i+1)+1]  = ...
				parameters.A[3*i+2,3*(i-1)+2] = 1
				parameters.A[3*i+2,3*(i+0)+2] = -1
			###parameters.A[3*i+2,3*(i+1)+2]  = ...
		else:

			#################
			###  center ###
			#################
			#######################
			###  poisson  ###
			#######################
				parameters.A[3*i+0,3*(i-1)+0] = -1
				parameters.A[3*i+0,3*(i+0)+0] = 2.0 - parameters.dx**2*parameters.q*(-parameters.Nc[i+0]*parameters.q*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.q*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))/parameters.Epsilon[i]
				parameters.A[3*i+0,3*(i+1)+0] = -1
				parameters.A[3*i+0,3*(i-1)+1] = 0
				parameters.A[3*i+0,3*(i+0)+1] = -parameters.Nv[i+0]*parameters.dx**2*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.Epsilon[i]*parameters.T*parameters.kB)
				parameters.A[3*i+0,3*(i+1)+1] = 0
				parameters.A[3*i+0,3*(i-1)+2] = 0
				parameters.A[3*i+0,3*(i+0)+2] = -parameters.Nc[i+0]*parameters.dx**2*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.Epsilon[i]*parameters.T*parameters.kB)
				parameters.A[3*i+0,3*(i+1)+2] = 0
			#######################
			###  div_j_p  ###
			#######################
				parameters.A[3*i+1,3*(i-1)+0] = 0
				parameters.A[3*i+1,3*(i+0)+0] = 0
				parameters.A[3*i+1,3*(i+1)+0] = 0
				parameters.A[3*i+1,3*(i-1)+1] = 1
				parameters.A[3*i+1,3*(i+0)+1] = -1
				parameters.A[3*i+1,3*(i+1)+1] = 0
				parameters.A[3*i+1,3*(i-1)+2] = 0
				parameters.A[3*i+1,3*(i+0)+2] = 0
				parameters.A[3*i+1,3*(i+1)+2] = 0
			#######################
			###  div_j_n  ###
			#######################
				parameters.A[3*i+2,3*(i-1)+0] = 0
				parameters.A[3*i+2,3*(i+0)+0] = 0
				parameters.A[3*i+2,3*(i+1)+0] = 0
				parameters.A[3*i+2,3*(i-1)+1] = 0
				parameters.A[3*i+2,3*(i+0)+1] = 0
				parameters.A[3*i+2,3*(i+1)+1] = 0
				parameters.A[3*i+2,3*(i-1)+2] = 1
				parameters.A[3*i+2,3*(i+0)+2] = -1
				parameters.A[3*i+2,3*(i+1)+2] = 0

	return 


################################
########### transient_update_b ###########
################################
def transient_update_b(Ua, Ub):

	for i in range(0, parameters.n):
		if (i==0) :
			#################
			###  left ###
			#################
			parameters.b[3*i+0] = (ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - 2.0*parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0] + parameters.dx**2*parameters.q*(parameters.C[i] - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.Epsilon[i]
			if (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			else:
				parameters.b[3*i+1] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			if (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			else:
				parameters.b[3*i+2] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

		elif(i==parameters.n-1):
			#################
			###  right ###
			#################
			parameters.b[3*i+0] = (ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - 2.0*parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0] + parameters.dx**2*parameters.q*(parameters.C[i] - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.Epsilon[i]
			if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*((1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			else:
				parameters.b[3*i+1] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*((1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB)) + parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			else:
				parameters.b[3*i+2] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

		else:
			#################
			###  center ###
			#################
			parameters.b[3*i+0] = -2.0*parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0] + parameters.u[3*(i-1)+0] + parameters.dx**2*parameters.q*(parameters.C[i] - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.Epsilon[i]
			if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			else:
				parameters.b[3*i+1] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB)) - parameters.Nv[i+0]*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u_old[(3*i+0)+0] + parameters.u_old[(3*i+0)+1])/(parameters.T*parameters.kB)))/parameters.dt

			if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) + parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + (1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*((1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*((1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt

			else:
				parameters.b[3*i+2] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx - parameters.dx*parameters.q*(parameters.Cau[i]*(-parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(-parameters.Eg[i+0]*parameters.q/(parameters.T*parameters.kB)) + parameters.Nc[i+0]*parameters.Nv[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))) - parameters.generation[i]) + parameters.dx*parameters.q*(parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB)) - parameters.Nc[i+0]*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u_old[(3*i+0)+0] - parameters.u_old[(3*i+0)+2])/(parameters.T*parameters.kB)))/parameters.dt


	return None



######################################
###########  transient_jacobian ##################
######################################
def transient_jacobian(Ua, Ub):

	for i in range(0, parameters.n):
		if (i==0) :

			#################
			###  left ###
			#################
			#######################
			###  poisson  ###
			#######################
			###parameters.A[3*i+0,3*(i-1)+0]  = ...
				parameters.A[3*i+0,3*(i+0)+0] = 2.0 - parameters.dx**2*parameters.q*(-parameters.Nc[i+0]*parameters.q*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.q*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))/parameters.Epsilon[i]
				parameters.A[3*i+0,3*(i+1)+0] = -1
			###parameters.A[3*i+0,3*(i-1)+1]  = ...
				parameters.A[3*i+0,3*(i+0)+1] = -parameters.Nv[i+0]*parameters.dx**2*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.Epsilon[i]*parameters.T*parameters.kB)
				parameters.A[3*i+0,3*(i+1)+1] = 0
			###parameters.A[3*i+0,3*(i-1)+2]  = ...
				parameters.A[3*i+0,3*(i+0)+2] = -parameters.Nc[i+0]*parameters.dx**2*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.Epsilon[i]*parameters.T*parameters.kB)
				parameters.A[3*i+0,3*(i+1)+2] = 0
			#######################
			###  div_j_p  ###
			#######################
			###parameters.A[3*i+1,3*(i-1)+0]  = ...
				if (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+1,3*(i+0)+0] = -1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				if (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

			###parameters.A[3*i+1,3*(i-1)+1]  = ...
				if (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				if (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				else:
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

			###parameters.A[3*i+1,3*(i-1)+2]  = ...
				if (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				else:
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				if (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				else:
					parameters.A[3*i+1,3*(i+1)+2] = 0

			#######################
			###  div_j_n  ###
			#######################
			###parameters.A[3*i+2,3*(i-1)+0]  = ...
				if (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+2,3*(i+0)+0] = -1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - Ua)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				if (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

			###parameters.A[3*i+2,3*(i-1)+1]  = ...
				if (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				else:
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				if (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				else:
					parameters.A[3*i+2,3*(i+1)+1] = 0

			###parameters.A[3*i+2,3*(i-1)+2]  = ...
				if (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(-1.0 + 0.5*parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				else:
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				if (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[0], parameters.Chi[0], parameters.Eg[0], parameters.Nc[0], parameters.Nv[0]) + Ua) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				else:
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

		elif(i==parameters.n-1):

			#################
			###  right ###
			#################
			#######################
			###  poisson  ###
			#######################
				parameters.A[3*i+0,3*(i-1)+0] = -1
				parameters.A[3*i+0,3*(i+0)+0] = 2.0 - parameters.dx**2*parameters.q*(-parameters.Nc[i+0]*parameters.q*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.q*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))/parameters.Epsilon[i]
			###parameters.A[3*i+0,3*(i+1)+0]  = ...
				parameters.A[3*i+0,3*(i-1)+1] = 0
				parameters.A[3*i+0,3*(i+0)+1] = -parameters.Nv[i+0]*parameters.dx**2*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.Epsilon[i]*parameters.T*parameters.kB)
			###parameters.A[3*i+0,3*(i+1)+1]  = ...
				parameters.A[3*i+0,3*(i-1)+2] = 0
				parameters.A[3*i+0,3*(i+0)+2] = -parameters.Nc[i+0]*parameters.dx**2*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.Epsilon[i]*parameters.T*parameters.kB)
			###parameters.A[3*i+0,3*(i+1)+2]  = ...
			#######################
			###  div_j_p  ###
			#######################
				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(0.5*parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+1,3*(i+0)+0] = 1.0*parameters.Nv[i+0]*parameters.T*parameters.kB*parameters.mu_p[i+0]*(-parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

			###parameters.A[3*i+1,3*(i+1)+0]  = ...
				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				else:
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q*(1.0 - 0.5*parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/parameters.dx - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				else:
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 1.0*parameters.Nv[i+0]*parameters.mu_p[i+0]*parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(0.5*parameters.q*(-2*parameters.Chi[i+0] - 2*parameters.Eg[i+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

			###parameters.A[3*i+1,3*(i+1)+1]  = ...
				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				else:
					parameters.A[3*i+1,3*(i-1)+2] = 0

				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				else:
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

			###parameters.A[3*i+1,3*(i+1)+2]  = ...
			#######################
			###  div_j_n  ###
			#######################
				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(-0.5*parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+2,3*(i+0)+0] = 1.0*parameters.Nc[i+0]*parameters.T*parameters.kB*parameters.mu_n[i+0]*(parameters.q*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - Ub)/(parameters.T*parameters.kB))*np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))/parameters.dx - parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

			###parameters.A[3*i+2,3*(i+1)+0]  = ...
				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				else:
					parameters.A[3*i+2,3*(i-1)+1] = 0

				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				else:
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

			###parameters.A[3*i+2,3*(i+1)+1]  = ...
				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q*(1.0 - 0.5*parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB))*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*((ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) - parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				else:
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 1.0*parameters.Nc[i+0]*parameters.mu_n[i+0]*parameters.q**2*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])*np.exp(1.0*parameters.Chi[i+0]*parameters.q/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-(ohm_potential(parameters.C[parameters.n-1], parameters.Chi[parameters.n-1], parameters.Eg[parameters.n-1], parameters.Nc[parameters.n-1], parameters.Nv[parameters.n-1]) + Ub) + parameters.u[(3*i+0)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

			###parameters.A[3*i+2,3*(i+1)+2]  = ...
		else:

			#################
			###  center ###
			#################
			#######################
			###  poisson  ###
			#######################
				parameters.A[3*i+0,3*(i-1)+0] = -1
				parameters.A[3*i+0,3*(i+0)+0] = 2.0 - parameters.dx**2*parameters.q*(-parameters.Nc[i+0]*parameters.q*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.q*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))/parameters.Epsilon[i]
				parameters.A[3*i+0,3*(i+1)+0] = -1
				parameters.A[3*i+0,3*(i-1)+1] = 0
				parameters.A[3*i+0,3*(i+0)+1] = -parameters.Nv[i+0]*parameters.dx**2*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.Epsilon[i]*parameters.T*parameters.kB)
				parameters.A[3*i+0,3*(i+1)+1] = 0
				parameters.A[3*i+0,3*(i-1)+2] = 0
				parameters.A[3*i+0,3*(i+0)+2] = -parameters.Nc[i+0]*parameters.dx**2*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.Epsilon[i]*parameters.T*parameters.kB)
				parameters.A[3*i+0,3*(i+1)+2] = 0
			#######################
			###  div_j_p  ###
			#######################
				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+1,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+1,3*(i+0)+0] = parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+1,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.q*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				else:
					parameters.A[3*i+1,3*(i-1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[3*(i-1)+0] + parameters.u[3*(i-1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				else:
					parameters.A[3*i+1,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + 0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i-1])*(parameters.mu_p[i+0] + parameters.mu_p[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i-1] - parameters.Eg[i+0] - parameters.Eg[i-1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				else:
					parameters.A[3*i+1,3*(i+1)+1] = -0.25*parameters.q**2*(parameters.Nv[i+0] + parameters.Nv[i+1])*(parameters.mu_p[i+0] + parameters.mu_p[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[3*(i+1)+0] + parameters.u[3*(i+1)+1])/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(-parameters.Chi[i+0] - parameters.Chi[i+1] - parameters.Eg[i+0] - parameters.Eg[i+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i-1)+2] = 0

				else:
					parameters.A[3*i+1,3*(i-1)+2] = 0

				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				else:
					parameters.A[3*i+1,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				if (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+1,3*(i+1)+2] = 0

				else:
					parameters.A[3*i+1,3*(i+1)+2] = 0

			#######################
			###  div_j_n  ###
			#######################
				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+2,3*(i-1)+0] = -0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+2,3*(i+0)+0] = -parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2) - parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))/parameters.dx

				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(0.5*parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + 0.5*parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) - parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+2,3*(i+1)+0] = 0.25*parameters.T*parameters.kB*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.q*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) + parameters.q**2*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2) + parameters.q**2*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))/(parameters.T**2*parameters.kB**2*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)**2))*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))/parameters.dx

				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+1] = 0

				else:
					parameters.A[3*i+2,3*(i-1)+1] = 0

				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				else:
					parameters.A[3*i+2,3*(i+0)+1] = parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB)

				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+1] = 0

				else:
					parameters.A[3*i+2,3*(i+1)+1] = 0

				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q*(1.0 - 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/parameters.dx

				else:
					parameters.A[3*i+2,3*(i-1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i-1)+0] - parameters.u[3*(i-1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) + 0.25*parameters.q*(-1.0 + 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q*(1.0 - 0.5*parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/parameters.dx - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				else:
					parameters.A[3*i+2,3*(i+0)+2] = -parameters.Cau[i]*parameters.Nc[i+0]*parameters.Nv[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))*np.exp(parameters.q*(-parameters.Chi[i+0] - parameters.Eg[i+0] - parameters.u[(3*i+0)+0] + parameters.u[(3*i+0)+1])/(parameters.T*parameters.kB))/(parameters.T*parameters.kB) + parameters.Nc[i+0]*parameters.dx*parameters.q**2*np.exp(parameters.q*(parameters.Chi[i+0] + parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dt*parameters.kB) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1)) - 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i-1])*(parameters.mu_n[i+0] + parameters.mu_n[i-1])*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i-1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[(3*i+0)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB)) - 1))

				if (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(parameters.u[(3*i+0)+0] - parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit ) and ( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = -0.25*parameters.q*(-1.0 + 0.5*parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB))*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/parameters.dx

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < -parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				elif (( parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i-1)+0])/(parameters.T*parameters.kB) < parameters.bernoulli_limit )):
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))

				else:
					parameters.A[3*i+2,3*(i+1)+2] = 0.25*parameters.q**2*(parameters.Nc[i+0] + parameters.Nc[i+1])*(parameters.mu_n[i+0] + parameters.mu_n[i+1])*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])*np.exp(0.5*parameters.q*(parameters.Chi[i+0] + parameters.Chi[i+1])/(parameters.T*parameters.kB))*np.exp(parameters.q*(parameters.u[3*(i+1)+0] - parameters.u[3*(i+1)+2])/(parameters.T*parameters.kB))/(parameters.T*parameters.dx*parameters.kB*(np.exp(parameters.q*(-parameters.u[(3*i+0)+0] + parameters.u[3*(i+1)+0])/(parameters.T*parameters.kB)) - 1))


	return 


